// 引入模板的全局样式
import "@/styles/index.scss";

import { createApp } from "vue";
import App from "./App.vue";
// 引入ele插件与样式
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
// ele国际化配置
import zhCn from "element-plus/es/locale/lang/zh-cn";
// svg插件配置代码
import "virtual:svg-icons-register";
// 引入自定义插件对象:注册整个项目的全局组件
import globalComponent from "@/components/index";
// 引入路由
import router from "./router";
// 引入仓库
import pinia from "./store";
// ele内置暗黑模式
import "element-plus/theme-chalk/dark/css-vars.css";
// 引入自定义指令文件
import { isHasButton } from "./directive/has.ts";
// 获取应用实例对象
const app = createApp(App);
// 调用自定义指令 传入app实例
isHasButton(app);
// 安装element-Plus插件
app.use(ElementPlus, {
  locale: zhCn, // 国际化配置
});
// 安装自定义插件
app.use(globalComponent);
// 注册路由
app.use(router);
// 安装仓库
app.use(pinia);

// 在挂载前同步 dark 模式到 HTML
import { useDarkModeStore } from "@/store/modules/dark.ts";
const darkStore = useDarkModeStore();
if (darkStore.darkMode) {
  document.documentElement.classList.add("dark");
} else {
  document.documentElement.classList.remove("dark");
}

if (darkStore.color) {
  document.documentElement.style.setProperty(
    "--el-color-primary",
    darkStore.color
  );
}

// 引入路由鉴权守卫
import "./permission.ts";
// 将应用挂载到挂载点上
app.mount("#app");
